<!DOCTYPE html>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<style>
    iframe { width: 10px; height: 100px }
</style>
<iframe id="frame" src=""></iframe>
<script>
    var tParser = async_test("Check that @media inside @supports respond to width changes.");
    var tCSSOM = async_test("Check that CSSOM-inserted @media inside @supports respond to width changes.");

    onload = () => {
        frame.contentDocument.body.innerHTML =
            "<style>@supports (color:red) { @media (min-width: 50px) { p { color:green } } }</style>"
            + "<style>@supports (color:red) {}</style>"
            + "<p>Should be green and italic.</p>";

        frame.contentDocument.styleSheets[1].cssRules[0].insertRule("@media (min-width: 150px) { p { font-style: italic } }", 0);

        var frameP = frame.contentDocument.querySelector("p");
        var frameWindow = frame.contentDocument.defaultView;

        tParser.step(() => assert_equals(frameWindow.getComputedStyle(frameP).color, "rgb(0, 0, 0)", "The color of P was not black before the resize."));
        tParser.step(() => {
            frame.style.width = "100px";
            assert_equals(frameWindow.getComputedStyle(frameP).color, "rgb(0, 128, 0)", "The color of P was not green after the resize.");
        });
        tParser.done();

        tCSSOM.step(() => assert_equals(frameWindow.getComputedStyle(frameP).fontStyle, "normal", "The font-style of P was not normal before the resize."));
        tCSSOM.step(() => {
            frame.style.width = "200px";
            assert_equals(frameWindow.getComputedStyle(frameP).fontStyle, "italic", "The font-style of P was not italic after the resize.");
        });
        tCSSOM.done();
    };
</script>
